package com.lzj.server.config;

import cn.dev33.satoken.interceptor.SaInterceptor;
import cn.dev33.satoken.stp.StpUtil;
import com.lzj.server.interceptor.GlobalInterceptor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @author lzj
 * @date 2024/10/28
 */
@Configuration
@Slf4j
public class WebConfig implements WebMvcConfigurer {
    /**
     * 注册拦截器
     *
     * @param registry 注册器
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new SaInterceptor(handler -> {
                    StpUtil.checkLogin();
                    // 可以添加角色或权限校验，例如：
                    // StpUtil.checkRole("ADMIN");
                }))
                .addPathPatterns("/vimi/**")
                .excludePathPatterns(
                        "/vimi/user/login",
                        "/vimi/captcha/**",
                        "/vimi/index/**",
                        "/vimi/cdn/**",
                        "/favicon.ico"
                );
    }

    /**
     * 注册跨域
     * 注意：如果要使用该方法，需要在application.yml中配置spring.web.cors.allowed-origins
     *
     * @param registry 注册器
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {

        String[] url = {"http://localhost:5173"  };

        registry.addMapping("/**")
                .allowedOrigins(url)
                .allowCredentials(true)
                .allowedMethods("*")   // 允许跨域的方法，可以单独配置
                .allowedHeaders("*");  // 允许跨域的请求头，可以单独配置;
    }
}
